package C.e.collection;

import java.util.ArrayList;
import java.util.List;

/**sublist方法的演示*/
public class SubListDemo {/*L<I>l=nA f(i<100) l.a(i100) S("list")
    L<I>s=l.s(2,5) S("s")
        f(i<s.s) s.s(i,s.g(i)100) S("s") S("l")
    l.s(4,随机数字) S("l") S("s")
    l.r(0) S("l") S("s")*/
    public static void main(String[] args) {
        /*
        List提供了获取子集的操作：
        List subList(int start,int end):含头不含尾************************
         */
        List<Integer>list=new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i*10);
        }
        System.out.println(list);

        List<Integer>subList= list.subList(3,8);//获取下标3到7的子集
        System.out.println(subList);//[30, 40, 50, 60, 70]

        //将子集每个元素都扩大十倍
        for (int i = 0; i < subList.size(); i++) {
            subList.set(i,subList.get(i)*10);
        }            // ↑坐标
        System.out.println("subList:"+subList);//[300, 400, 500, 600, 700]
        //注意：对子集的操作就是对原集合的对应的元素操作（改子集必须也要改原集）
        System.out.println("list:"+list);//[0, 10, 20, 300, 400, 500, 600, 700, 80, 90]

        list.set(3,1000);//将原集合下标为3的元素的数据修改为1000
        System.out.println("list:"+list);//[0, 10, 20, 1000, 400, 500, 600, 700, 80, 90]
        //原集合数据修改后，子集数据跟着变了
        System.out.println("subList:"+subList);//[1000, 400, 500, 600, 700]

        list.remove(0);
        System.out.println("list:"+list);//[10, 20, 1000, 400, 500, 600, 700, 80, 90]
        //原集合长度修改之后，子集将不能再进行任何操作，操作则发生异常，但是可以重新获取子集
        System.out.println("subList:"+subList);//运行时发生不支持修改异常































    }
}
